﻿using System.Data;
using System.Data.SqlClient;

namespace Wedn.Interface.DAL
{
    /// <summary>
    /// 数据库访问助手接口
    /// </summary>
    public interface IDbHelper
    {
        /// <summary>
        /// 执行一个非查询的T-SQL语句，返回受影响行数，如果执行的是非增、删、改操作，返回-1
        /// </summary>
        /// <param name="cmdText">要执行的T-SQL语句</param>
        /// <param name="type">命令类型</param>
        /// <param name="parameters">参数列表</param>
        /// <returns>受影响的行数</returns>
        int ExecuteNonQuery(string cmdText, CommandType type, params SqlParameter[] parameters);
        /// <summary>
        /// 执行一个非查询的T-SQL语句，返回受影响行数，如果执行的是非增、删、改操作，返回-1
        /// </summary>
        /// <param name="cmdText">要执行的T-SQL语句</param>
        /// <param name="parameters">参数列表</param>
        /// <returns>受影响的行数</returns>
        int ExecuteNonQuery(string cmdText, params SqlParameter[] parameters);
        /// <summary>
        /// 执行一个查询的T-SQL语句，返回第一行第一列的结果
        /// </summary>
        /// <param name="cmdText">要执行的T-SQL语句</param>
        /// <param name="type">命令类型</param>
        /// <param name="parameters">参数列表</param>
        /// <returns>返回第一行第一列的数据</returns>
        object ExecuteScalar(string cmdText, CommandType type, params SqlParameter[] parameters);
        /// <summary>
        /// 执行一个查询的T-SQL语句，返回第一行第一列的结果
        /// </summary>
        /// <param name="cmdText">要执行的T-SQL语句</param>
        /// <param name="parameters">参数列表</param>
        /// <returns>返回第一行第一列的数据</returns>
        object ExecuteScalar(string cmdText, params SqlParameter[] parameters);
        /// <summary>
        /// 执行一个查询的T-SQL语句, 返回一个SqlDataReader对象, 如果出现SQL语句执行错误, 将会关闭连接通道抛出异常
        ///  ( 注意：调用该方法后，一定要对SqlDataReader进行Close )
        /// </summary>
        /// <param name="cmdText">要执行的T-SQL语句</param>
        /// <param name="type">命令类型</param>
        /// <param name="parameters">参数列表</param>
        /// <returns>SqlDataReader对象</returns>
        SqlDataReader ExecuteReader(string cmdText, CommandType type, params SqlParameter[] parameters);
        /// <summary>
        /// 执行一个查询的T-SQL语句, 返回一个SqlDataReader对象, 如果出现SQL语句执行错误, 将会关闭连接通道抛出异常
        ///  ( 注意：调用该方法后，一定要对SqlDataReader进行Close )
        /// </summary>
        /// <param name="cmdText">要执行的T-SQL语句</param>
        /// <param name="parameters">参数列表</param>
        /// <returns>SqlDataReader对象</returns>
        SqlDataReader ExecuteReader(string cmdText, params SqlParameter[] parameters);
        /// <summary>
        /// 获取指定表中指定字段的最大值, 确保字段为INT类型
        /// </summary>
        /// <param name="fieldName">字段名</param>
        /// <param name="tableName">表名</param>
        /// <returns>最大值</returns>
        int ExecuteSelectMax(string fieldName, string tableName);

        string GetPageSQL(string tableName, string colName, string colList, int pageSize, int pageIndex, int orderBy, string condition);
    }
}
